﻿// 功能：红外传感器示例窗口
// 描述：
// 作者：温伟鹏
// 日期：2010/6/2 10:17:38

using System;
using System.Collections.Generic;
using System.Text;
using MeizuSDK.Core;
using MeizuSDK.Presentation;

namespace Demo
{
    /// <summary>
    /// 红外传感器示例窗口
    /// </summary>
    class IRSensorWindow : DemoWindowBase
    {
        private const uint WM_MZ_IRSENSOR = 10002;

        private Button btnIrSensor = new Button();

        public IRSensorWindow()
        {
            IRSensor.Open();// 打开红外传感器
            IRSensor.RegisterNotify(HWnd, WM_MZ_IRSENSOR); // 注册传感器消息

            btnIrSensor.Location = new System.Drawing.Point(20, 50);
            btnIrSensor.Width = 280;
            btnIrSensor.Text = "关闭红外感应";
            btnIrSensor.Click += new EventHandler(btnIrSensor_Click);

            Controls.Add(btnIrSensor);
        }

        void btnIrSensor_Click(object sender, EventArgs e)
        {
            if (btnIrSensor.Text == "关闭红外感应")
            {
                btnIrSensor.Text = "打开红外感应";
                //btnIrSensor.Invalidate();
                //btnIrSensor.Update();

                if (!IRSensor.UnRegisterNotify(HWnd))
                {
                    MessageBox.Show("注销红外感应消息失败！", "警告");
                }

                if (!IRSensor.Close())
                {
                    MessageBox.Show("关闭红外感应失败！", "警告");
                }
            }
            else
            {
                btnIrSensor.Text = "关闭红外感应";
                //btnIrSensor.Invalidate();
                //btnIrSensor.Update();

                if (!IRSensor.Open())
                {
                    MessageBox.Show("打开红外感应失败！", "警告");
                }

                if (!IRSensor.RegisterNotify(HWnd, WM_MZ_IRSENSOR))
                {
                    MessageBox.Show("注册红外感应消息失败！", "警告");
                }

                if (!IRSensor.SetLevel(IRSensorLevel.High))
                {
                    MessageBox.Show("设置红外感应等级失败！", "警告");
                }

                IRSensorLevel level = IRSensor.GetLevel();

                switch (level)
                {
                    case IRSensorLevel.High:
                        MessageBox.Show("红外探测等级：高", "消息");
                        break;
                    case IRSensorLevel.Medium:
                        MessageBox.Show("红外探测等级：中", "消息");
                        break;
                    case IRSensorLevel.Low:
                        MessageBox.Show("红外探测等级：低", "消息");
                        break;
                    case IRSensorLevel.Max:
                        MessageBox.Show("红外探测等级：最大", "消息");
                        break;
                    case IRSensorLevel.None:
                        MessageBox.Show("红外探测等级：无", "消息");
                        break;
                }
            }
        }

        protected override void WndProc(uint message, uint wParam, uint lParam)
        {
            if(message == WM_MZ_IRSENSOR)
            {
                if(lParam == 0)
                {
                    BackLightAPI.OpenBackLight();
                }
                else
                {
                    BackLightAPI.CloseBackLight();
                }
            }
            base.WndProc(message, wParam, lParam);
        }

        protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
        {
            base.OnClosing(e);

            if(!e.Cancel)
            {
                IRSensor.UnRegisterNotify(HWnd);
            }
        }
    }
}
